package CodeProcess;

/**
 * 焊接位置处理器
 *
 * @author zzy
 * @version V1.0
 * @since 2022/8/3
 */
public class PositionProcess extends ProjectCodeProcess {

    public String process(String[] args) {
        StringBuilder sb = new StringBuilder();

        // 焊接位置下标
        int index = ProjectCodeProcess.getPositionIndex(args);
        int flag = index == 0 ? 5 : index;

        // 焊接位置
        String position = args[flag];
        // 焊缝形式
        String gap = args[2];

        // 对接焊缝焊接位置适用范围
        if ("BW".equals(gap)) {
            String str = getPositionSuitForBW(position);
            sb.append(str);
        }

        // 角焊缝焊接位置适用范围
        if ("FW".equals(gap)) {
            String str = getPositionSuitForFW(position);
            sb.append(str);
        }

        // 堆焊焊缝焊接位置适用范围
        if ("S".equals(gap)) {
            String str = getPositionSuitForFW(position);
            sb.append(str);
        }

        return sb.toString();
    }

    /**
     * 3.5.2 对接焊缝焊接位置的适用范围见表 5
     *
     * @param position
     * @return
     */
    private String getPositionSuitForBW(String position) {
        if ("PA".equals(position)) {
            return "PA";
        } else if ("PC".equals(position)) {
            return "PA、PC";
        } else if ("PE".equals(position)) {
            return "PA、PC、PE";
        } else if ("PF".equals(position)) {
            return "PA、PF";
        } else if ("PH".equals(position)) {
            return "PA、PE、PF、PH";
        } else if ("PG".equals(position)) {
            return "PG";
        } else if ("PJ".equals(position)) {
            return "PA、PE、PG、PJ";
        } else if ("H-L045".equals(position)) {
            return "PA、PC、PE、PF、PH、H-L045";
        } else if ("J-L045".equals(position)) {
            return "PA、PC、PE、PG、PJ、J-L045";
        } else {
            return "";
        }
    }

    /**
     * 3.5.2 角焊缝焊接位置的适用范围见表 6
     *
     * @param position
     * @return
     */
    private String getPositionSuitForFW(String position) {
        if ("PA".equals(position)) {
            return "PA";
        } else if ("PB".equals(position)) {
            return "PA、PB";
        } else if ("PC".equals(position)) {
            return "PA、PB、PC";
        } else if ("PD".equals(position)) {
            return "PA、PB、PC、PD、PE";
        } else if ("PE".equals(position)) {
            return "PA、PB、PC、PD、PE";
        } else if ("PF".equals(position)) {
            return "PA、PB、PF";
        } else if ("PH".equals(position)) {
            return "PA、PB、PC、PD、PE、PF、PH";
        } else if ("PG".equals(position)) {
            return "PG";
        } else if ("PJ".equals(position)) {
            return "PA、PB、PD、PE、PG、PJ";
        } else if ("H-L045".equals(position)) {
            return "PA、PB、PC、PD、PE、PF、PH、H-L045";
        } else if ("J-L045".equals(position)) {
            return "PA、PB、PC、PD、PE、PG、PJ、J-L045";
        } else {
            return "";
        }
    }

}
